/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package verins.beans;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import verins.Utils.Constantes;

/**
 *
 * @author hectdx
 */
@Entity
@Table(name = "procesoempadronamiento", schema = "verinscribe")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Procesoempadronamiento.findAll", query = "SELECT p FROM Procesoempadronamiento p"),
    @NamedQuery(name = "Procesoempadronamiento.findByIdprocesoempadronamiento", query = "SELECT p FROM Procesoempadronamiento p WHERE p.idprocesoempadronamiento = :idprocesoempadronamiento"),
    @NamedQuery(name = "Procesoempadronamiento.findByDescripcion", query = "SELECT p FROM Procesoempadronamiento p WHERE p.descripcion = :descripcion"),
    @NamedQuery(name = "Procesoempadronamiento.findByFechainicio", query = "SELECT p FROM Procesoempadronamiento p WHERE p.fechainicio = :fechainicio"),
    @NamedQuery(name = "Procesoempadronamiento.findByFechafin", query = "SELECT p FROM Procesoempadronamiento p WHERE p.fechafin = :fechafin"),
    @NamedQuery(name = "Procesoempadronamiento.findByEstado", query = "SELECT p FROM Procesoempadronamiento p WHERE p.estado = :estado"),
    @NamedQuery(name = "Procesoempadronamiento.findByIndiceminimofirmas", query = "SELECT p FROM Procesoempadronamiento p WHERE p.indiceminimofirmas = :indiceminimofirmas"),
    @NamedQuery(name = "Procesoempadronamiento.findByIndicemuestraaleatoria", query = "SELECT p FROM Procesoempadronamiento p WHERE p.indicemuestraaleatoria = :indicemuestraaleatoria")})
public class Procesoempadronamiento implements Serializable {
    @Basic(optional =     false)
    @Column(name = "fechainicio")
    @Temporal(TemporalType.DATE)
    private Date fechainicio;
    @Basic(optional =     false)
    @Column(name = "fechafin")
    @Temporal(TemporalType.DATE)
    private Date fechafin;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idprocesoempadronamiento")
    private List<Actaprocesamiento> actaprocesamientoList;
    @Column(name = "porcentpoblacion")
    private Integer porcentpoblacion;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idprocesoempadronamiento")
    private List<Persona> personaList;
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "idprocesoempadronamiento", nullable = false)
    @GeneratedValue(generator="verinscribe.procesoempadronamiento_idrocesoempadronamiento_seq",strategy= GenerationType.IDENTITY)
    private Integer idprocesoempadronamiento;
    @Basic(optional = false)
    @Column(name = "descripcion", nullable = false, length = 100)
    private String descripcion;
    @Column(name = "estado", length = 50)
    private String estado;
    @Basic(optional = false)
    @Column(name = "indiceminimofirmas", nullable = false)
    private int indiceminimofirmas;
    @Basic(optional = false)
    @Column(name = "indicemuestraaleatoria", nullable = false)
    private int indicemuestraaleatoria;
    @JoinColumn(name = "idtipoempadronamiento", referencedColumnName = "idtipoempadronamiento", nullable = false)
    @ManyToOne(optional = false)
    private Tipoempadronamiento idtipoempadronamiento;
    @JoinColumn(name = "idprocesoelectoral", referencedColumnName = "idprocesoelectoral", nullable = false)
    @ManyToOne(optional = false)
    private Procesoelectoral idprocesoelectoral;
    @JoinColumn(name = "idestadoprocesoempadronamiento", referencedColumnName = "idestadoprocesoempadronamiento", nullable = false)
    @ManyToOne(optional = false)
    private Estadoprocesoempadronamiento idestadoprocesoempadronamiento;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "procesoempadronamiento")
    private List<Etapaprocesoempadronamiento> etapaprocesoempadronamientoList;

    public Procesoempadronamiento() {
    }

    public Procesoempadronamiento(Integer idprocesoempadronamiento) {
        this.idprocesoempadronamiento = idprocesoempadronamiento;
    }

    public Procesoempadronamiento(Integer idprocesoempadronamiento, String descripcion, Date fechainicio, Date fechafin, int indiceminimofirmas, int indicemuestraaleatoria) {
        this.idprocesoempadronamiento = idprocesoempadronamiento;
        this.descripcion = descripcion;
        this.fechainicio = fechainicio;
        this.fechafin = fechafin;
        this.indiceminimofirmas = indiceminimofirmas;
        this.indicemuestraaleatoria = indicemuestraaleatoria;
    }

    public Integer getIdprocesoempadronamiento() {
        return idprocesoempadronamiento;
    }

    public void setIdprocesoempadronamiento(Integer idprocesoempadronamiento) {
        this.idprocesoempadronamiento = idprocesoempadronamiento;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public int getIndiceminimofirmas() {
        return indiceminimofirmas;
    }

    public void setIndiceminimofirmas(int indiceminimofirmas) {
        this.indiceminimofirmas = indiceminimofirmas;
    }

    public int getIndicemuestraaleatoria() {
        return indicemuestraaleatoria;
    }

    public void setIndicemuestraaleatoria(int indicemuestraaleatoria) {
        this.indicemuestraaleatoria = indicemuestraaleatoria;
    }

    public Tipoempadronamiento getIdtipoempadronamiento() {
        return idtipoempadronamiento;
    }

    public void setIdtipoempadronamiento(Tipoempadronamiento idtipoempadronamiento) {
        this.idtipoempadronamiento = idtipoempadronamiento;
    }

    public Procesoelectoral getIdprocesoelectoral() {
        return idprocesoelectoral;
    }

    public void setIdprocesoelectoral(Procesoelectoral idprocesoelectoral) {
        this.idprocesoelectoral = idprocesoelectoral;
    }

    public Estadoprocesoempadronamiento getIdestadoprocesoempadronamiento() {
        return idestadoprocesoempadronamiento;
    }

    public void setIdestadoprocesoempadronamiento(Estadoprocesoempadronamiento idestadoprocesoempadronamiento) {
        this.idestadoprocesoempadronamiento = idestadoprocesoempadronamiento;
    }

    @XmlTransient
    public List<Etapaprocesoempadronamiento> getEtapaprocesoempadronamientoList() {
        return etapaprocesoempadronamientoList;
    }

    public void setEtapaprocesoempadronamientoList(List<Etapaprocesoempadronamiento> etapaprocesoempadronamientoList) {
        this.etapaprocesoempadronamientoList = etapaprocesoempadronamientoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idprocesoempadronamiento != null ? idprocesoempadronamiento.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Procesoempadronamiento)) {
            return false;
        }
        Procesoempadronamiento other = (Procesoempadronamiento) object;
        if ((this.idprocesoempadronamiento == null && other.idprocesoempadronamiento != null) || (this.idprocesoempadronamiento != null && !this.idprocesoempadronamiento.equals(other.idprocesoempadronamiento))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "verins.beans.Procesoempadronamiento[ idprocesoempadronamiento=" + idprocesoempadronamiento + " ]";
    }
    
    public String descCambio() {
        SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
        String toStr="";
        toStr+=" Proceso Empadr: "+descripcion;
        toStr+=Constantes.NL+" Tipo: "+idtipoempadronamiento.getDescripcion();
        toStr+=Constantes.NL+" Estado: "+idestadoprocesoempadronamiento.getDescripcion();
        toStr+=Constantes.NL+" Fecha: "+sdf.format(fechainicio)+" - "+sdf.format(fechafin);
        
        return toStr;
    }

    @XmlTransient
    public List<Persona> getPersonaList() {
        return personaList;
    }

    public void setPersonaList(List<Persona> personaList) {
        this.personaList = personaList;
    }

    public Integer getPorcentpoblacion() {
        return porcentpoblacion;
    }

    public void setPorcentpoblacion(Integer porcentpoblacion) {
        this.porcentpoblacion = porcentpoblacion;
    }

    public Date getFechainicio() {
        return fechainicio;
    }

    public void setFechainicio(Date fechainicio) {
        this.fechainicio = fechainicio;
    }

    public Date getFechafin() {
        return fechafin;
    }

    public void setFechafin(Date fechafin) {
        this.fechafin = fechafin;
    }

    @XmlTransient
    public List<Actaprocesamiento> getActaprocesamientoList() {
        return actaprocesamientoList;
    }

    public void setActaprocesamientoList(List<Actaprocesamiento> actaprocesamientoList) {
        this.actaprocesamientoList = actaprocesamientoList;
    }
    
}
